package com.run2code;

public class Main {
    public static void main(String[] args) {
        Main main = new Main();
        ListNode node2 = new ListNode(2);
        ListNode node4 = new ListNode(4);

        ListNode listNode = new ListNode(0);
        listNode.next = new ListNode(9);
        listNode.next.next = new ListNode(1);
        listNode.next.next.next = node2;
        listNode.next.next.next.next  = node4;

        ListNode listNode2 = new ListNode(3);
        listNode2.next = node2;
        listNode2.next.next = node4;
        System.out.println(main.getIntersectionNode(listNode, listNode2));
    }

    public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
        ListNode a = headA, b = headB;
        // 如果a和b相等，那么说明他们两个走完了
        // 如果不相等，那么自己走自己的
        while (a != b) {
            // 如果a不等于空，那么就走a的
            // 如果a为空，那么说明a走完了，就继续走b的
            a = a != null ? a.next : headB;
            // 如果b不等于空，那么就走b的
            // 如果b为空，那么说明b走完了，就继续走a的
            b = b != null ? b.next : headA;
        }
        // 返回a或者b都是一样的
        return a;
    }

}